package org.grayrabbit.cms.plugin;

import org.grayrabbit.cms.plugin.Plugin;
import org.grayrabbit.cms.plugin.PluginAccessor;
import org.grayrabbit.cms.plugin.PluginException;
import org.grayrabbit.cms.plugin.PluginJar;
import org.grayrabbit.cms.plugin.PluginParseException;
import org.grayrabbit.cms.plugin.loaders.PluginLoader;


/**
 * @author sys53
 * @version 1.0
 * @created 06-一月-2012 16:05:07
 */
public interface PluginInstallationManager {

	/**
	 * 
	 * @param pluginKey
	 */
	public void cancelPluginUpdate(String pluginKey);

	/**
	 * 
	 * @param path
	 */
	public void configurePluginPath(String path);

	/**
	 * 
	 * @param pluginAccessor
	 * @param pluginJar
	 */
	public String installPlugin(PluginAccessor pluginAccessor, PluginJar pluginJar);

	public boolean isConfigured();

	public void processUpdates() throws PluginParseException, PluginException;

	/**
	 * 
	 * @param plugin
	 */
	public void uninstall(Plugin plugin);

	public PluginLoader getInstalledPluginsLoader();

}